﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using DataAccess.BusinessEntities;

namespace Locator.Services
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IStoresService" in both code and config file together.
    [ServiceContract]
    public interface IStoresService
    {
        [OperationContract]
        [ApplyDataContractResolver]
        List<PersonalLocation> GetPersonalLocationsForCurrentUser();

        [OperationContract]
        [ApplyDataContractResolver]
        List<Store> FindStoresByPostalCode(string postalCode, int radiusInKm);
        
        [OperationContract]
        [ApplyDataContractResolver]
        List<Store> FindStoresByLatitudeAndLongitude(decimal latitude, decimal longitude, int radiusInKm);
        
        [OperationContract]
        [ApplyDataContractResolver]
        List<Store> FindStoresByPersonalLocation(int personalLocationId, int radiusInKm);
        
        [OperationContract]
        [ApplyDataContractResolver]
        List<Store> GetStoresForCurrentUser();
        
        [OperationContract]
        [ApplyDataContractResolver]
        List<Store> FindStoresNotUsedByCurrentUser();
        
        [OperationContract]
        [ApplyDataContractResolver]
        List<string> AllCities();
        
        [OperationContract]
        [ApplyDataContractResolver]
        List<Store> FindStoresInCity(string cityName);

        [OperationContract]
        [ApplyDataContractResolver]
        void AddStoreForCurrentUser(int storeNumber);

        [OperationContract]
        [ApplyDataContractResolver]
        void DeleteStoreForCurrentUser(int storeNumber);
    }
}
